RDF String
This package contains utility functions to convert between the string-based
and RDFJS representations of RDF terms, quads and triples.
If you are looking for a Turtle-based string syntax, have a look at RDF String Turtle
This allows for convenient and compact interaction with RDF terms and quads,
as they can be serialized as plain JSON.
This string-based representation is based on the
old triple representation of N3.js.
Namely, quads are represented as follows:
{
subject: 'http://example.org/cartoons#Tom',
predicate: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',
object: 'http://example.org/cartoons#Cat'
graph: 'http://example.org/myGraph'
}
Different terms types in quads are represented as follows:
- URLs, URIs and IRIs are simple strings:
'http://example.org/cartoons#Tom'
- Literals are represented as double quoted strings:
'"Tom"'
, '"Tom"@en-gb'
, '"1"^^http://www.w3.org/2001/XMLSchema#integer'
- Variables are prefixed by
?
: '?variableName'
Usage
The following examples assume the following imports:
import * as RdfDataModel from "rdf-data-model";
import * as RdfString from "rdf-string";
Term to string
Convert an RDFJS term to the string-based representation.
console.log(RdfString.termToString(RdfDataModel.namedNode('http://example.org')));
console.log(RdfString.termToString(RdfDataModel.blankNode('b1')));
console.log(RdfString.termToString(RdfDataModel.literal('abc')));
console.log(RdfString.termToString(RdfDataModel.literal('abc', 'en-us')));
console.log(RdfString.termToString(RdfDataModel.literal('abc', namedNode('http://example.org/'))));
console.log(RdfString.termToString(RdfDataModel.variable('v1')));
console.log(RdfString.termToString(RdfDataModel.defaultGraph()));
String to term
Convert an string-based term to the RDFJS representation.
Optionally, a custom RDFJS DataFactory can be provided as second argument to create terms instead of the built-in DataFactory.
RdfString.stringToTerm('http://example.org');
RdfString.stringToTerm('_:b1');
RdfString.stringToTerm('"abc"');
RdfString.stringToTerm('"abc"@en-us');
RdfString.stringToTerm('"abc"^^http://example.org/');
RdfString.stringToTerm('?v1');
RdfString.stringToTerm('');
Quad to string-based quad
Convert an RDFJS quad to a string-based quad.
console.log(RdfString.quadToStringQuad(RdfDataModel.triple(
namedNode('http://example.org'),
namedNode('http://example.org'),
literal('abc'),
)));
String-based quad to quad
Converts a string-based quad to an RDFJS quad.
Optionally, a custom RDFJS DataFactory can be provided as second argument to create quads and terms instead of the built-in DataFactory.
RdfString.stringQuadToQuad({
subject: 'http://example.org',
predicate: 'http://example.org',
object: '"abc"',
graph: '',
});
License
This software is written by Ruben Taelman.
These utility functions are inspired by the implementation of N3.js.
This code is released under the MIT license.